<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <!-- 
            
    封装一个函数,判断数组中是否存在某个元素 includes([1,4,7,2,5,8],5)  => true/false
    封装一个函数,判断数组中是否存在某个元素,返回该元素的下标位置 indexOf([1,4,7,2,5,8],5)  => 下标/-1
    
    封装一个函数, 在数组的尾部加一个元素  push([1,4,7,2,5,8],9) =>  [1,4,7,2,5,8,9]
    封装一个函数, 在数组的头部加一个元素  unshift([1,4,7,2,5,8],9) =>  [9,1,4,7,2,5,8]


     -->
</body>
<script>

    // 封装一个函数,判断数组中是否存在某个元素 includes([1,4,7,2,5,8],5)  => true/false
    /* var list = [1, 4, 7, 2, 5, 8];
    var ele = 5;

    var flag = false;  //假设不存在
    for (var i = 0; i < list.length; i++) {
        var item = list[i];
        if(item === ele){ // 有一个满足就存在
            flag = true;
            break;
        }
    }
    console.log(flag); */


    function includes(list, ele) {
        // var list = [1, 4, 7, 2, 5, 8];
        // var ele = 5;

        var flag = false;  //假设不存在
        for (var i = 0; i < list.length; i++) {
            var item = list[i];
            if (item === ele) { // 有一个满足就存在
                flag = true;
                break;
            }
        }
        // console.log(flag);
        return flag;
    }

    // var list = [1, 4, 7, 2, 5, 8];
    // var ele = 5;

    // var result = includes(list,9);
    // console.log(result);

    // var result = includes(list,7);
    // console.log(result);



    // indexOf()  可以用于判断是否存在某个元素
    // index != -1 (index >= 0)  元素存在
    // index == -1  元素不存在
    function indexOf(list, ele) {
        // var list = [1, 4, 7, 2, 5, 8];
        // var ele = 5;

        var index = -1;  //假设不存在(对应下标-1)
        for (var i = 0; i < list.length; i++) {
            var item = list[i];
            if (item === ele) { // 有一个满足就存在 (记录下标)
                index = i;
                break;
            }
        }
        return index;
    }

    // var list = [1, 4, 7, 2, 5, 8];
    // var ele = 5;

    // var result = indexOf(list,9);
    // console.log(result); // -1 

    // var result = indexOf(list,7);
    // console.log(result); // 2

    //   封装一个函数, 在数组的尾部加一个元素   => 返回新增元素后数组的长度
    function push(arr, ele) {// 形参(局部变量) 
        // arr = list   浅复制(arr list引用同一片内存地址)
        // ele = 4
        arr[arr.length] = ele;
        return arr.length; //返回新增元素后数组的长度
    }

    // var list = [1, 2, 3];
    // var result = push(list, "x");
    // console.log(result);
    // console.log(list);


    //  封装一个函数, 在数组的头部加一个元素  unshift([1,4,7,2,5,8],9) =>  [9,1,4,7,2,5,8]


    // 原: [1,4,7,2,5,8]
    // 头: [9,1,4,7,2,5,8]


    // [1,4,7,2,5,8]

    // var list = [1, 4, 7, 2, 5, 8];
    // // var list = [1, 1, 4, 7, 2, 5, 8];
    // // var list = [1, 4, 7, 2, 5, 8, , , 8];

    // var ele = 9;

    // // i的初始值 = list.length - 1 => 5
    // for (var i = list.length - 1; i >= 0; i--) {
    //     list[i + 1] = list[i];
    // }
    // console.log(list);
    // // list[0] = ele;


    // function unshift(list,ele) {
    //     // var list = [1, 4, 7, 2, 5, 8];
    //     // var ele = 9;

    //     // i的初始值 = list.length - 1 => 5
    //     for (var i = list.length - 1; i >= 0; i--) {
    //         list[i + 1] = list[i];
    //     }
    //     list[0] = ele;
    //     return list.length;
    // }

    // var arr = [1,2,3,4];
    // var result = unshift(arr,"a");
    // console.log(result);
    // console.log(arr);


    // 了解!!!
    function unshift() {
        // var list = [1, 4, 7, 2, 5, 8];
        // var ele = 9;

        // arguments实际参数的集合 [arr,"a","b","c"]
        console.log(arguments); // [[1,2,3,4],"a","b","c"]
        var list = arguments[0]; // list = arr;
        var len = arguments.length - 1; //新增元素的个数

        // i的初始值 = list.length - 1 => 5
        for (var i = list.length - 1; i >= 0; i--) {
            list[i + len] = list[i];
        }

        for (var j = 0; j < len; j++) {
            list[j] = arguments[j + 1];
        }
        
        // for(var j = 1;j<arguments.length;j++){
        //     list[j - 1] = arguments[j];
        // }

        return list.length;
    }

    var arr = [1, 2, 3, 4];
    var result = unshift(arr, "a", "b", "c");
    console.log(result);
    console.log(arr);



</script>

</html>